%% 清空环境变量
warning off % 关闭警告信息显示
close all % 关闭所有图形窗口
clear % 清除工作区变量
clc % 清空命令窗口
% 读取文件
data = xlsread('1.2.2.xlsx','B2:G489');%导入数据库
 
% 将数据拆分为特征和目标变量
X = data(1:end, 1:5); % 假设前6列是特征
y = data(1:end, 6);   % 假设最后一列是目标变量

ens = fitensemble(X, y, 'LSBoost', 100, 'Tree', 'Type', 'regression');
ypred = predict(ens,X);
R2=1-sum((y-ypred).^2)/sum((mean(y)-y).^2);%相关性系数
disp(['R2 is:：', num2str(R2)])

% 计算特征的重要性分数
featureImportance = predictorImportance(ens);
% 将特征的重要性得分归一化处理
normalizedFeatureImportance = featureImportance / sum(featureImportance);
disp(normalizedFeatureImportance);
 
% 可视化特征重要性
bar(normalizedFeatureImportance);
xlabel('特征');
ylabel('重要性得分');
title('特征重要性');
 
% 根据得分排序特征
[sortedImportance, sortedIdx] = sort(normalizedFeatureImportance, 'descend');
topFeatures = sortedIdx(1:4); % 选择最重要的四个特征
 
% 输出最重要的特征
topFeaturesNames = {'性别'	,'年级','专业领域','您使用AI工具的频率如何','您对AI工具的依赖程度如何'};
disp('最重要的特征是：');
disp(topFeaturesNames(topFeatures));
% 重新设置图表横坐标
xticklabels(topFeaturesNames);